AWS IoTポリシーが削除できない事象に対処した話
こんにちは、CX事業本部の若槻です。
作成したAWS IoTポリシーが削除できない事象に遭遇したので対処した際の話となります。
事象
下記のように不要になったIoTポリシーをAWS CLIコマンドで削除しようとすると、DeleteConflictException
エラーとなり削除ができませんでした。
$ aws iot delete-policy --policy-name TestPolicy An error occurred (DeleteConflictException) when calling the DeletePolicy operation: The policy cannot be deleted as versions other than than default version exist (name=TestPolicy)
マネジメントコンソールから削除しようとしても同様のエラーとなります。
解決
原因は、IoTポリシーのポリシードキュメントの修正を行っていたため、ポリシーの過去バージョンが存在していたためでした。
削除したいポリシーのバージョンを確認してみると、最新の"versionId": "2"
のほかに"versionId": "1"
のバージョンがありました。
$ aws iot list-policy-versions --policy-name TestPolicy { "policyVersions": [ { "versionId": "2", "isDefaultVersion": true, "createDate": 1577336482.783 }, { "versionId": "1", "isDefaultVersion": false, "createDate": 1577336482.783 } ] }
対処としては、"isDefaultVersion": false
のバージョンをすべて削除します。
$ aws iot delete-policy-version --policy-name TestPolicy --policy-version-id 1
存在しているバージョンが"isDefaultVersion": true
のバージョンのみとなったため、IoTポリシー自体を削除することができました。
$ aws iot delete-policy --policy-name TestPolicy
おわりに
本エラーについてはググってもほとんど情報は出てきませんが、エラー内容をよく読めば原因が書いてあるため対処はしやすかったです。
以上